package bosque.unc;

import jssc.SerialPortException;

/**
 * @author Maxi
 *Hilo que se encarga de la Lectura del palpador para saber la posicion del espejo secundario
 *abre el puerto y lee el string
 */
public class LecturaPalpador extends Thread{
	
	private Lecturas lecturas;
	private ControladorRS232 puertoSerie;
	private Integer delayLecturaPalpador = 500;
	private Boolean lecturaPalpadorActivada = true;
	
	private boolean puertoAbierto = false;
	
	public LecturaPalpador(Lecturas lec, Integer delay)
	{
		this.lecturas = lec;
		this.puertoSerie = lecturas.getInteprete().getControladorRS232();
		this.delayLecturaPalpador = delay;
	}
	
	public void run()
	{
		this.lecturas.setPosicionPalpador(-1.0);
		while(lecturas.getLecturaPalpadorActivada())
		{
			//System.out.println("corriendo hilo palpador...");
			
			try {
				puertoAbierto = this.puertoSerie.isOpened();
			} catch (Exception e2) {
				// TODO Auto-generated catch block
				//e2.printStackTrace();
				puertoAbierto = false;
				this.lecturas.setPosicionPalpador(-1.0);
				
			}
	
			if (this.lecturas.isSensorPalpadorActivo() && puertoAbierto ) 
			{
				System.out.println("adentro de if...");
				puertoSerie.setearDTR(false);
				try {
					Thread.sleep(150);
				} catch (InterruptedException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
				puertoSerie.setearDTR(true);
				String data = "";
				try {
					data = puertoSerie.leerSringFromPuertoSerie();
				} catch (Exception e2) {
					// TODO Auto-generated catch block
					data = "ERROR";
					e2.printStackTrace();
				}
				
				try {
					if(data != null)
						this.lecturas.setPosicionPalpador(Double.parseDouble(data));
					else
					{
						this.lecturas.setPosicionPalpador(-1.0);

					}
				} catch (NumberFormatException e1) {
					// TODO Auto-generated catch block
					//e1.printStackTrace();
				}
				
			}
			else
			{
				this.lecturas.setPosicionPalpador(-1.0);
			}
			
			try {
				Thread.sleep(this.delayLecturaPalpador);
			} catch (InterruptedException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			
		}
	}

	public Integer getDelayLecturaPalpador() {
		return delayLecturaPalpador;
	}

	public void setDelayLecturaPalpador(Integer delayLecturaPalpador) {
		this.delayLecturaPalpador = delayLecturaPalpador;
	}

	public Boolean getLecturaPalpadorActivada() {
		return lecturaPalpadorActivada;
	}

	public void setLecturaPalpadorActivada(Boolean lecturaPalpadorActivada) {
		this.lecturaPalpadorActivada = lecturaPalpadorActivada;
	}

	

	
	
}
